BIN = ~/bin
FC = ftn
OPT = -O2 -ip -mcmodel=medium
OPTE = -O3 -ip -mcmodel=medium
#OPT = -g -CB -mcmodel=medium -shared-intel -dynamic
FFLAGS = ${OPT} -c -I. -I./include_unres -I$(INSTALL_DIR)/include
FFLAGSE = ${OPTE} -c -I. -I./include_unres -I$(INSTALL_DIR)/include
LIBS = -L$(INSTALL_DIR)/lib -lmpich xdrf/libxdrf.a

.f.o:
	${FC} ${FFLAGS} $*.f

.F.o:
	${FC} ${FFLAGS} ${CPPFLAGS} $*.F

objects = \
	wham_multparm.o \
	bxread.o \
	xread.o \
	cxread.o \
	enecalc1.o \
	energy_p_new.o \
	gnmr1.o \
	initialize_p.o \
	molread_zs.o \
	openunits.o \
	readrtns.o \
	read_constr_homology.o \
	arcos.o \
	cartprint.o \
	chainbuild.o \
	geomout.o \
	icant.o \
	intcor.o \
	int_from_cart.o \
	refsys.o \
	make_ensemble1.o \
	matmult.o \
	misc.o \
	mygetenv.o \
	parmread.o \
	permut.o \
	seq2chains.o \
	chain_symmetry.o \
	iperm.o \
	pinorm.o \
	printmat.o \
	proc_proc.o \
	rescode.o \
	setup_var.o \
	slices.o \
	store_parm.o \
	timing.o \
	wham_calc1.o \
	PMFprocess.o \
	nmr_hpos.o \
	boxshift.o \
	ssMD.o \
	oligomer.o 

objects_compar = \
        readrtns_compar.o \
        readpdb-mult.o fitsq.o contact.o \
        elecont.o contfunc.o cont_frag.o conf_compar.o match_contact.o \
        angnorm.o odlodc.o promienie.o qwolynes.o read_ref_str.o \
        rmscalc.o secondary.o proc_cont.o define_pairs.o mysort.o

all: no_option
	@echo "Specify force field: GAB, 4P, E0LL2Y or NEWCORR"

no_option:

GAB: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM
GAB: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_GAB-HCD.exe

GAB_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM -DDFA
GAB_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_GAB-HCD-DFA.exe

4P: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM
4P: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_4P-HCD.exe

4P_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPGI -DISNAN -DAMD64 \
	-DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DFOURBODY -DWHAM -DDFA
4P_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_4P-HCD-DFA.exe

E0LL2Y: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DFOURBODY -DAMD64 -DWHAM
E0LL2Y: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_E0LL2Y-HCD.exe

E0LL2Y_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DPGI -DISNAN -DFOURBODY -DAMD64 -DWHAM -DDFA
E0LL2Y_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_E0LL2Y-HCD-DFA.exe

NEWCORR: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DPGI -DISNAN -DAMD64 -DWHAM
NEWCORR: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_SC-HCD.exe

NEWCORR5D: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DPGI -DISNAN -DAMD64 -DWHAM -DFIVEDIAG
NEWCORR5D: ${objects} ${objects_compar} xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_SC-HCD5-nmr-SAXS.exe

NEWCORR_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DDFA -DPGI -DISNAN -DAMD64 -DWHAM -DDFA
NEWCORR_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_SC-HCD-DFA-nmr-SAXS.exe

NEWCORR5D_DFA: CPPFLAGS = -DMPI -DLINUX -DUNRES -DSPLITELE -DPROCOR -DNEWCORR -DCORRCD -DDFA -DPGI -DISNAN -DAMD64 -DWHAM -DFIVEDIAG -DDFA
NEWCORR5D_DFA: ${objects} ${objects_compar} dfa.o xdrf/libxdrf.a
	gcc -o compinfo compinfo.c
	./compinfo
	${FC} -c ${FFLAGS} cinfo.f
	$(FC) ${OPT} ${objects} ${objects_compar} dfa.o cinfo.o \
	${LIBS} -o ${BIN}/wham_ifort_MPICH-okeanos_SC-HCD5-DFA.exe

xdrf/libxdrf.a:
	cd xdrf && make


clean:
	/bin/rm -f *.o && /bin/rm -f compinfo && cd xdrf && make clean

